public class Main{
	public static void main(String[] args){
		// 5位同学的成绩
		// 5位同学的成绩:
        int n1 = 68;
        int n2 = 79;
        int n3 = 91;
        int n4 = 85;
        int n5 = 62;

        int[] ns = new int[5];
        ns[0] = 68;
        ns[1] = 79;
        ns[2] = 91;
        ns[3] = 85;
        ns[4] = 62;

        System.out.println(ns.length); // 5


        //可以在定义数组时直接指定初始化的元素，这样就不必写出数组大小，而是由编译器自动推算数组大小。
        int[] ns = new int[] { 68, 79, 91, 85, 62 };
        System.out.println(ns.length); // 编译器自动推算数组大小为5

        //还可以进一步简写为
        int[] ns = { 68,79,97,85,62 }; //编译器自动推算数组大小,并为ns创建一个new int[]类型
	

        //或者可以这样写
        // 5位同学的成绩:
        int[] ns;
        ns = new int[] { 68, 79, 91, 85, 62 };
        System.out.println(ns.length); // 5
        ns = new int[] { 1, 2, 3 }; //通过重新复制,计算机在内存中重新建立一个{ 1, 2, 3 }的数组类型数据,并指向该地址.让原本5个的数组地址滞空
        System.out.println(ns.length); // 3
        	// 执行ns = new int[] { 1, 2, 3 };时，它指向一个新的3个元素的数组


        // String[]
        String[] name = {
        	"ABC","XYZ","zoo"
        };

        String s = names[1]; //s->names[1]的地址
        names[1] = "cat"; // name[1]->"cat"的地址
        System.out.println(s); // s是"XYZ"还是"cat"? 是cat
        // s->name[1]地址访问name[1],然后name[1]content指向"cat"地址访问

	}
}

/*
定义一个数组类型的变量，使用数组类型“类型[]”，例如，int[]。和单个基本类型变量不同，数组变量初始化必须使用new int[5]表示创建一个可容纳5个int元素的数组。

Java的数组有几个特点：

	1.数组所有元素初始化为默认值，整型都是0，浮点型是0.0，布尔型是false；
	数组一旦创建后，大小就不可改变。
	要访问数组中的某一个元素，需要使用索引。数组索引从0开始，例如，5个元素的数组，索引范围是0~4。

	2.可以修改数组中的某一个元素，使用赋值语句，例如，ns[1] = 79;。

	3.可以用数组变量.length获取数组大小：

数组赋值-地址调用详解：
1.对于数组ns来说，执行ns = new int[] { 68, 79, 91, 85, 62 };时，它指向一个5个元素的数组
2.执行ns = new int[] { 1, 2, 3 };时，它指向一个新的3个元素的数组
3.原有的5个元素的数组并没有改变，只是无法通过变量ns引用到它们而已

字符串数组
如果数组元素不是基本类型，而是一个引用类型，那么，修改数组元素会有哪些不同？

对于String[]类型的数组变量names，它实际上包含3个元素，但每个元素都指向某个字符串对象

对names[1]进行赋值，例如names[1] = "cat";

这里注意到原来names[1]指向的字符串"XYZ"并没有改变，仅仅是将names[1]的引用从指向"XYZ"改成了指向"cat"，其结果是字符串"XYZ"再也无法通过names[1]访问到了。


1.数组是同一数据类型的集合，数组一旦创建后，大小就不可变；
2.可以通过索引访问数组元素，但索引超出范围将报错；
3.数组元素可以是(1)值类型（如int）或(2)引用类型（如String），但数组[]本身是引用类型(Reference Type);
*/